initial import boxroom 0.6.2
[boxroom-stian.git] / vendor / plugins / rubyzip-0.9.1 / lib / quiz1 / t / solutions / Jim Menard / test.rb
blob786192ecd9891249712442976dd284038e7cafc3
1 #! /usr/bin/env ruby
3 require 'test/unit.rb'
4 require 'test/unit/ui/console/testrunner'
5 require 'solitaire_cypher.rb'
7 class SolitaireCypherTest < Test::Unit::TestCase
9     KNOWN_PLAINTEXT = 'CODEI NRUBY LIVEL ONGER'
10     KNOWN_CYPHER = 'GLNCQ MJAFF FVOMB JIYCB'
12     def setup
13         @deck = Deck.new.key
14         @crypt_keeper = CryptKeeper.new(@deck)
15     end
17     def test_value_to_chr
18         assert_equal('A', Card.value_to_chr(1))
19         assert_equal('Z', Card.value_to_chr(26))
20     end
22     def test_chr_to_value
23         assert_equal(1, Card.chr_to_value("A"))
24         assert_equal(26, Card.chr_to_value("Z"))
25     end
27     def test_keystream
28         expected = %w(D W J X H Y R F D G)
29         deck = Deck.new.key
30         expected.each { | exp |
31             key = deck.next_keystream
32             if exp != Card.value_to_chr(key)
33                 @errors << "expected #{exp}, key = #{Card.value_to_chr(key)}"
34             end
35         }
36     end
38     def test_decrypt_known_cypher
39         assert_equal(KNOWN_PLAINTEXT, @crypt_keeper.decrypt(KNOWN_CYPHER))
40     end
42     def test_encrypt_known_message
43         assert_equal(KNOWN_CYPHER, @crypt_keeper.encrypt(KNOWN_PLAINTEXT))
44     end
45 end
47 Test::Unit::UI::Console::TestRunner.run(SolitaireCypherTest)